package com.dc.project.service;

import com.dc.project.entity.bo.TaskDetailBo;
import com.dc.project.entity.map.TaskDetailMapVo;
import com.dc.project.entity.po.Task;
import com.dc.project.entity.po.TaskDetail;
import com.dc.project.entity.query.TaskDetailQuery;
import com.dc.project.entity.vo.TaskDetailVo;
import com.own.component.common.base.service.BaseService;

import java.util.List;

/**
 * TaskDetailService
 *
 * @author chenxueli
 * @date 2025-03-08 15:11:52
 */
public interface TaskDetailService extends BaseService<
        TaskDetail,
        TaskDetailBo,
        TaskDetailVo,
        TaskDetailMapVo,
        TaskDetailQuery
        > {

    /**
     * 根据任务id获取任务详情列表
     *
     * @param taskId 任务id
     * @return 任务详情列表
     */
    List<TaskDetail> listByTaskId(Long taskId);

    /**
     * 根据文件列表创建任务详情信息
     *
     * @param task       任务信息
     * @param fileIdList 文件ID列表
     */
    void createByFileList(Task task, List<Long> fileIdList);

    /**
     * 根据模板key创建任务详情
     *
     * @param task        任务信息
     * @param templateKey 模板key
     */
    void createByTemplateKey(Task task, String templateKey);

    /**
     * 获取第一条未处理的任务详情
     *
     * @return 任务详情
     */
    TaskDetail getFirstNotHandleDetail();

    /**
     * 完成解析
     *
     * @param id     任务详情id
     * @param status 状态
     */
    void complete(Long id, int status);

    /**
     * 完成解析
     *
     * @param id      任务详情id
     * @param content 解析内容
     * @param status  解析状态
     */
    void complete(Long id, String content, int status);

}

